/**    
* @Title: FileUtil.java  
* @Package com.kaver.utils   
* @author roc   
* @date 2019年5月23日 下午7:21:19  
* @version V1.0  
* @copyright kaver 
*/
package com.kaver.utils;

import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: FileUtil
 * @Description: 文件工具
 * @author roc
 * @date 2019年5月23日 下午7:21:19
 * 
 */
public class FileUtil {

	/**
	 * 创建文件夹，不存在父文件自动创建
	 */
	public static void createDir(String dirPath) {
		File file = new File(dirPath);
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		file.mkdir();
	}

	/**
	 * 通过正则匹配删除文件
	 */
	public static void delFileByPattern(String filePattern) {
		File f = new File(filePattern);
		File parentDir = f.getParentFile();
		String regex = f.getName();
		FileSystem FS = FileSystems.getDefault();
		final PathMatcher matcher = FS.getPathMatcher("regex:" + regex);
		DirectoryStream.Filter<Path> fileFilter = new DirectoryStream.Filter<Path>() {
			@Override
			public boolean accept(Path entry) throws IOException {
				return matcher.matches(entry.getFileName()) && !Files.isDirectory(entry);
			}
		};
		List<File> result = new ArrayList<>();
		try (
			DirectoryStream<Path> stream = Files.newDirectoryStream(parentDir.toPath(), fileFilter)) {
			for (Path entry : stream) {
				result.add(entry.toFile());
			}
		} catch (Exception e) {

		}
		for (File file : result) {
			file.delete();
		}
	}

	public static void main(String[] args) {
		delFileByPattern("/data/a/b/c/d/(.+_\\d+).txt");
	}
}
